package lccup;

/**
 * LCP 29.乐团站位
 * https://leetcode.cn/problems/SNJvJP/
 *
 * @author habitplus
 * @since 2022/8/2 23:21
 */
public class T29 {
    public int orchestraLayout(int num, int xPos, int yPos) {
        if (num < 1) return 0;
        if (xPos < 0 || xPos >= num || yPos < 0 || yPos >= num)
            return 0;

        // 总圈数
        int circle = (num + 1) >> 1;

        // 在第几个圈上
        long th = Math.min(Math.min(num - xPos, num - yPos), Math.min(xPos + 1, yPos + 1));

        // 前 th - 1 圈总共的乐队数
        long total = 4L * (num * (th - 1) - (th - 1) * (th - 1));

        if (xPos == th - 1) {
            // 在上面 水平
            total += (yPos - th + 2);
        } else if (yPos == num - th) {
            // 在 右边 垂直
            total += (num - th - th + 2 + xPos - th + 1);
        } else if (xPos == num - th) {
            // 在 下边 水平
            total += (2 * (num - 2 * th + 1) + (num - th - yPos));
        } else {
            // 在 左边 垂直
            total += (3 * (num - 2 * th + 1) + 1 + (num - th - xPos));
        }

        return total % 9 == 0 ? 9 : (int) (total % 9);

    }
}
